/**
 * 双重校验：线程安全，调用效率高，可以延迟加载
 *
 * @author ItJianGe
 * @data 2024/7/22 17:41
 */
public class SingleDemo1 {
    private static volatile SingleDemo1 singleDemo1;

    private SingleDemo1() {
    }

    // 降低了加锁的粒度
    public static SingleDemo1 getSingleDemo1() {
        if (singleDemo1 == null) {
            synchronized (SingleDemo1.class) {
                singleDemo1 = new SingleDemo1();
            }
        }
        return singleDemo1;
    }

    public void say() {
        System.out.println("singleDemo1调用了这个方法。。。");
    }
}
